一、变量
    1、批量声明变量:let name,age;
    2、批量声明变量并赋值:let name = '你的',age = 21;
    3、声明变量的特殊场景：
        （1）声明不赋值：
            let name; console.log(name)  => undefined
        （2）不声明不赋值：
            console.log(name)  => 控制台报错：name is undefined
        （3）不声明直接赋值：
            name = '你'; console.log(name)  => 控制台：你
            可以使用；但是不建议
二、数据类型转换
    1、转换为字符型
        let num = 0
        （1）num.toString() 
        （2）String(num)
        （3）num + ''
    2、转换为数值型
        let str = '111'
        （1）Number(str)
        （2）parseInt('111.9') => 111;    parseInt('111px') => 111;
        （3）parseFloat('111.9') => 111.9;    parseFloat('111px') => 111;     
        （4）str - 0 或者 9 - str被减
    3、转换成boolean类型
        （1）Boolean('123')：只有这一种方法
        （2）结果为false的情况，其他都是true：Boolean('');Boolean(0);Boolean(NaN);Boolean(null);Boolean(undefined);
三、数值Number类型运算
    1、js中加减乘除有算术优先级，乘除加减
    2、浮点数（小数点）运算会有问题
        （1）0.1 + 0.2 = 0.300000000000004
        （2）0.07 * 100 = 7.00000000000001
    3、num ++ 和 ++ num的区别
        let num = 10
        （1）console.log(num++ + 10)   => 输出 20   先给num值进行运算num + 10,再num = num + 1
        （2）console.log(++num + 10)   => 输出 21   先给num值进行运算num = num + 1,再num + 10
        总结：++num更好一点，输出准确
四、逻辑与&& 和逻辑或 ||
    1、加减乘除的权重大于逻辑与和逻辑或，逻辑与比逻辑或权重高；
五、循环
    1、for循环中:
        （1）continue：跳出本次循环；继续循环
        （2）break：跳出整个循环；
六、函数    
    1、参数:不确定参数数量时，可以用 arguments伪数组 在函数中打印出来;也不用写形参名
    2、作用域：被调用的函数可以使用函数上面的变量;函数套函数，也可以使用；
    3、函数中：不声明直接赋值：num = 9 属于 全局变量
七、预解析  学习地址：https://www.bilibili.com/video/BV1ux411d75J?p=135
    1、命名函数：function fn() {}
        （1）不论调用的先后顺序；都能找到函数
    2、匿名函数：const fn = function() {}
        （1）先调用，再在下面写函数内容； =》 报错：fn is undefined
        （2）先写函数，写完后再调用；    =》可以使用
    3、变量：
        console.log(num);
        var num = 10;       => 输出：undefined；不报错，相当于只声明没赋值
    总结：
    预解析：js引擎会把js里面所有的 var 和function 提升到当前作用域的最前面
    1、变量解析（变量提升）
    2、函数预解析（函数提升）

